package com.ls.service;

import com.ls.entity.DiscussPost;
import com.ls.entity.vo.DiscussPostVo;

import java.util.List;

public interface DiscussPostService {

    /**
     * 功能描述: <br>
     * 分页查询帖子 缓存 -> 数据库
     *
     * @param userId
     * @param startIndex
     * @param pageSize
     * @param orderMode  排序方式 0 最新, 1最热
     * @return {@link List<DiscussPostVo>}
     * @author ls
     * @date 2021/8/28 20:05
     */
    List<DiscussPostVo> queryDiscussPosts(int userId, int startIndex, int pageSize, int orderMode);

    /**
     * 从数据库 分页查询帖子
     *
     * @param userId
     * @param startIndex
     * @param pageSize
     * @param orderMode
     * @return
     */
    List<DiscussPostVo> queryDiscussPostsFromDb(int userId, int startIndex, int pageSize, int orderMode);

    /**
     * 查询帖子总记录数
     *
     * @param userId
     * @return
     */
    int queryDiscussPostRows(int userId);

    /**
     * 添加帖子
     *
     * @param discussPost
     */
    void addDiscussPost(DiscussPost discussPost);

    /**
     * 根据id查询帖子
     *
     * @param discussPostId
     * @return
     */
    DiscussPost queryDiscussPostById(int discussPostId);

    /**
     * 更新帖子评论数
     *
     * @param id
     * @param commentCount
     */
    void updateCommentCount(int id, int commentCount);

    /**
     * 功能描述: <br>
     * 修改帖子状态
     *
     * @param id
     * @param status
     * @author ls
     * @date 2021/8/23 20:35
     */
    void updateStatus(int id, int status);

    /**
     * 功能描述: <br>
     * 修改帖子类型
     *
     * @param id
     * @param type
     * @author ls
     * @date 2021/8/23 20:35
     */
    void updateType(int id, int type);

    /**
     * @param id
     * @param score
     * @return
     */
    int updateScore(int id, double score);
}
